package com.ruoyi.tzai.service;

import java.util.List;
import com.ruoyi.tzai.domain.TTSEngineConfig;

/**
 * TTS引擎配置Service接口
 * 
 * @author tzai
 * @date 2025-10-27
 */
public interface ITTSEngineConfigService 
{
    /**
     * 查询TTS引擎配置
     * 
     * @param engineId TTS引擎配置主键
     * @return TTS引擎配置
     */
    public TTSEngineConfig selectTTSEngineConfigByEngineId(Long engineId);

    /**
     * 根据引擎代码查询TTS引擎配置
     * 
     * @param engineCode 引擎代码
     * @return TTS引擎配置
     */
    public TTSEngineConfig selectTTSEngineConfigByEngineCode(String engineCode);

    /**
     * 查询默认TTS引擎配置
     * 
     * @return TTS引擎配置
     */
    public TTSEngineConfig selectDefaultTTSEngineConfig();

    /**
     * 查询支持时间戳的TTS引擎配置列表
     * 
     * @return TTS引擎配置集合
     */
    public List<TTSEngineConfig> selectTTSEngineConfigWithTimestamp();

    /**
     * 查询TTS引擎配置列表
     * 
     * @param ttsEngineConfig TTS引擎配置
     * @return TTS引擎配置集合
     */
    public List<TTSEngineConfig> selectTTSEngineConfigList(TTSEngineConfig ttsEngineConfig);

    /**
     * 新增TTS引擎配置
     * 
     * @param ttsEngineConfig TTS引擎配置
     * @return 结果
     */
    public int insertTTSEngineConfig(TTSEngineConfig ttsEngineConfig);

    /**
     * 修改TTS引擎配置
     * 
     * @param ttsEngineConfig TTS引擎配置
     * @return 结果
     */
    public int updateTTSEngineConfig(TTSEngineConfig ttsEngineConfig);

    /**
     * 批量删除TTS引擎配置
     * 
     * @param engineIds 需要删除的TTS引擎配置主键集合
     * @return 结果
     */
    public int deleteTTSEngineConfigByEngineIds(Long[] engineIds);

    /**
     * 删除TTS引擎配置信息
     * 
     * @param engineId TTS引擎配置主键
     * @return 结果
     */
    public int deleteTTSEngineConfigByEngineId(Long engineId);

    /**
     * 设置为默认引擎
     * 
     * @param engineId TTS引擎配置主键
     * @return 结果
     */
    public int setAsDefault(Long engineId);

    /**
     * 测试引擎连接
     * 
     * @param engineId TTS引擎配置主键
     * @return 结果
     */
    public boolean testConnection(Long engineId);

    /**
     * 试听测试
     * 
     * @param engineId TTS引擎配置主键
     * @param text 测试文本
     * @return 音频URL
     */
    public String testAudio(Long engineId, String text);
}

